]> git.openstreetmap.org Git - rails.git/commitdiff
Merge remote-tracking branch 'upstream/pull/5402'
authorTom Hughes <tom@compton.nu>
Tue, 11 Mar 2025 18:47:18 +0000 (18:47 +0000)
committerTom Hughes <tom@compton.nu>
Tue, 11 Mar 2025 18:47:18 +0000 (18:47 +0000)
1  2 
app/assets/stylesheets/common.scss
config/locales/en.yml
package.json
yarn.lock

index cbd6a94aafff9c0c5ea845ce3a40858968348ff7,980200b8883882dc717391bd9f93f181c012ab2b..3ba484cd5c10745a407f30920ded6f222ff475a6
@@@ -336,6 -336,10 +336,6 @@@ body.small-nav 
    #sidebar {
      float: left;
      width: $sidebarWidth;
 -
 -    #sidebar_loader {
 -      display: none;
 -    }
    }
  
    .overlay-sidebar #sidebar {
        display: block;
      }
  
 +    .sidebar-close-controls,
 +    #sidebar_loader,
      #sidebar_content {
        display: none;
      }
@@@ -590,6 -592,22 +590,6 @@@ header .search_forms
  
  /* Rules for routing */
  
 -div.direction {
 -  background-image: image-url('routing-sprite.svg');
 -  width: 20px;
 -  height: 20px;
 -  background-repeat: no-repeat;
 -}
 -@for $i from 0 through 25 {
 -div.direction.i#{$i} { background-position: #{($i)*-20}px 0px; }
 -}
 -
 -@include color-mode(dark) {
 -  div.direction {
 -    filter: invert(1);
 -  }
 -}
 -
  td.distance {
      font-size: x-small;
  }
@@@ -989,3 -1007,7 +989,7 @@@ img.trace_image 
      }
    }
  }
+ .heatmap-wrapper {
+   height: 130px;
+ }
diff --combined config/locales/en.yml
index e136a53c285bd5646652c61f78d8a9782ad7847f,29e53903ae1710c05f73f2221d25cfa83d8fd992..bc2f3b1b32fbc97ae75163cfe5088b530e344883
@@@ -417,8 -417,7 +417,8 @@@ en
        telephone_link: "Call %{phone_number}"
        colour_preview: "Colour %{colour_value} preview"
        email_link: "Email %{email}"
 -    query:
 +  feature_queries:
 +    show:
        title: "Query Features"
        introduction: "Click on the map to find nearby features."
        nearby: "Nearby features"
          sorry: "Sorry, the list of changeset comments you requested took too long to retrieve."
    changesets:
      changeset:
 -      no_edits: "(no edits)"
 -      view_changeset_details: "View changeset details"
 +      comments:
 +        one: "%{count} comment"
 +        other: "%{count} comments"
 +      changes:
 +        one: "%{count} change"
 +        other: "%{count} changes"
      index:
        title: "Changesets"
        title_user: "Changesets by %{user}"
        km away: "%{count}km away"
        m away: "%{count}m away"
        latest_edit_html: "Latest edit (%{ago}):"
 +      no_edits: "(no edits)"
 +      view_changeset_details: "View changeset details"
      popup:
        your location: "Your location"
        nearby mapper: "Nearby mapper"
            weir: "Weir"
            "yes": "Waterway"
        admin_levels:
 -        level2: "Country Boundary"
 -        level3: "Region Boundary"
 -        level4: "State Boundary"
 -        level5: "Region Boundary"
 -        level6: "County Boundary"
 -        level7: "Municipality Boundary"
 -        level8: "City Boundary"
 -        level9: "Village Boundary"
 -        level10: "Suburb Boundary"
 -        level11: "Neighbourhood Boundary"
 +        level2: "International Boundary"
 +        level3: "Administrative Boundary (Level 3)"
 +        level4: "Administrative Boundary (Level 4)"
 +        level5: "Administrative Boundary (Level 5)"
 +        level6: "Administrative Boundary (Level 6)"
 +        level7: "Administrative Boundary (Level 7)"
 +        level8: "Administrative Boundary (Level 8)"
 +        level9: "Administrative Boundary (Level 9)"
 +        level10: "Administrative Boundary (Level 10)"
 +        level11: "Administrative Boundary (Level 11)"
 +      border_types:
 +        arrondissement: "Arrondissement Boundary"
 +        borough: "Borough Boundary"
 +        cercle: "Cercle Boundary"
 +        city: "City Boundary"
 +        comarca: "Comarca Boundary"
 +        county: "County Boundary"
 +        departement: "Departmental Boundary"
 +        department: "Departmental Boundary"
 +        district: "District Boundary"
 +        distrito: "District Boundary"
 +        freguesia: "Freguesia Boundary"
 +        local_authority: "Local Authority Boundary"
 +        municipality: "Municipal Boundary"
 +        municipi: "Municipal Boundary"
 +        município: "Municipal Boundary"
 +        nation: "International Boundary"
 +        national: "International Boundary"
 +        neighbourhood: "Neighborhood Boundary"
 +        parish: "Parish Boundary"
 +        province: "Provincial Boundary"
 +        região: "Regional Boundary"
 +        region: "Regional Boundary"
 +        state: "State Boundary"
 +        town: "Town Boundary"
 +        township: "Township Boundary"
 +        village: "Village Boundary"
      results:
        no_results: "No results found"
        more_results: "More results"
 +  directions:
 +    search:
 +      title: Directions
    issues:
      index:
        title: Issues
        select_status: Select Status
        select_type: Select Type
 -      select_last_updated_by: Select Last Updated By
 +      select_last_managed_by: Select Last Managed By
        reported_user: Reported User
 -      not_updated: Not Updated
 +      not_managed: Not Managed
        search: Search
        search_guidance: "Search Issues:"
        states:
        status: Status
        reports: Reports
        last_updated: Last Updated
 -      last_updated_time_ago_user_html: "%{time_ago} by %{user}"
 +      last_managed: Last Managed
        reporting_users: Reporting Users
        reports_count:
          one: "%{count} Report"
          other: "%{count} Reports"
 -      more_reporters: "and %{count} more"
        reported_item: Reported Item
        states:
          ignored: Ignored
        reportable_title:
          diary_comment: "%{entry_title}, comment #%{comment_id}"
          note: "Note #%{note_id}"
 +      reportable_heading:
 +        diary_comment_html: "Diary Comment %{title} created on %{datetime_created}, updated on %{datetime_updated}"
 +        diary_entry_html: "Diary Entry %{title} created on %{datetime_created}, updated on %{datetime_updated}"
 +        note_html: "%{title} created on %{datetime_created}, updated on %{datetime_updated}"
 +        user_html: "User %{title} created on %{datetime_created}"
 +    reporters:
 +      index:
 +        title: "Issue #%{issue_id} Reporters"
 +      reporters:
 +        more_reporters: "and %{count} more"
    issue_comments:
      create:
        comment_created: Your comment was successfully created
        not_public_description_html: "You can no longer edit the map unless you do so. You can set your edits as public from your %{user_page}."
        user_page_link: user page
        anon_edits_html: "(%{link})"
 -      anon_edits_link: "https://wiki.openstreetmap.org/wiki/Disabling_anonymous_edits"
 +      anon_edits_link: "https://wiki.openstreetmap.org/wiki/Anonymous_edits"
        anon_edits_link_text: "Find out why this is the case."
      edit:
        id_not_configured: "iD has not been configured"
        where_am_i_title: Describe the current location using the search engine
        submit_text: "Go"
        reverse_directions_text: "Reverse Directions"
 +      modes:
 +        bicycle: "Bicycle"
 +        car: "Car"
 +        foot: "Foot"
 +      providers:
 +        fossgis_osrm: "OSRM"
 +        graphhopper: "GraphHopper"
 +        fossgis_valhalla: "Valhalla"
      key:
        table:
          entry:
        cookies_needed: "You appear to have cookies disabled - please enable cookies in your browser before continuing."
      setup_user_auth:
        blocked_zero_hour: "You have an urgent message on the OpenStreetMap website. You need to read the message before you will be able to save your edits."
 -      blocked: "Your access to the API has been blocked. Please log-in to the web interface to find out more."
 -      need_to_see_terms: "Your access to the API is temporarily suspended. Please log-in to the web interface to view the Contributor Terms. You do not need to agree, but you must view them."
 +      blocked: "Your access to the API has been blocked. Please log in to the web interface to find out more."
 +      need_to_see_terms: "Your access to the API is temporarily suspended. Please log in to the web interface to view the Contributor Terms. You do not need to agree, but you must view them."
      settings_menu:
        account_settings: Account Settings
        oauth2_applications: OAuth 2 Applications
      permissions:
        missing: "You have not permitted the application access to this facility"
      scopes:
 -      openid: Sign-in using OpenStreetMap
 +      openid: Sign in using OpenStreetMap
        read_prefs: Read user preferences
        write_prefs: Modify user preferences
        write_diary: Create diary entries and comments
            confirmed: Confirmed
            suspended: Suspended
            deleted: Deleted
 +        name_or_email: Name or Email
          ip_address: IP Address
 +        edits: Edits?
 +        has_edits: Has Edits
 +        no_edits: No Edits
          search: Search
        page:
          found_users:
        closed_title: "Resolved note #%{note_name}"
        hidden_title: "Hidden note #%{note_name}"
        description_when_author_is_deleted: "deleted"
 +      description_when_there_is_no_opening_comment: "unknown"
        event_opened_by_html: "Created by %{user} %{time_ago}"
        event_opened_by_anonymous_html: "Created by anonymous %{time_ago}"
        event_commented_by_html: "Comment from %{user} %{time_ago}"
      edit_help: Move the map and zoom in on a location you want to edit, then click here.
      directions:
        ascend: "Ascend"
 -      engines:
 -        fossgis_osrm_bike: "Bicycle (OSRM)"
 -        fossgis_osrm_car: "Car (OSRM)"
 -        fossgis_osrm_foot: "Foot (OSRM)"
 -        graphhopper_bicycle: "Bicycle (GraphHopper)"
 -        graphhopper_car: "Car (GraphHopper)"
 -        graphhopper_foot: "Foot (GraphHopper)"
 -        fossgis_valhalla_bicycle: "Bicycle (Valhalla)"
 -        fossgis_valhalla_car: "Car (Valhalla)"
 -        fossgis_valhalla_foot: "Foot (Valhalla)"
        descend: "Descend"
 -      directions: "Directions"
        distance: "Distance"
        distance_m: "%{distance}m"
        distance_km: "%{distance}km"
            ninth: "9th"
            tenth: "10th"
        time: "Time"
 +      download: "Download route as GeoJSON"
 +      filename: "route"
      query:
        node: Node
        way: Way
      home:
        marker_title: My home location
        not_set: Home location is not set for your account
+     heatmap:
+       tooltip:
+         no_contributions: "No contributions on %{date}"
+         contributions:
+           one: "%{count} contribution on %{date}"
+           other: "%{count} contributions on %{date}"
    redactions:
      edit:
        heading: "Edit Redaction"
diff --combined package.json
index 2a7eddd2bf9fa2b3edb3f6bf5d5c96abc7c03a71,64fb0a58b11223b058965d3094ddb04b4f6f6e01..4812a8bf7d03f32386ce3177d67f29432a543beb
@@@ -2,19 -2,19 +2,20 @@@
    "name": "openstreetmap",
    "private": true,
    "dependencies": {
+     "cal-heatmap": "^4.2.4",
      "jquery-simulate": "^1.0.2",
      "js-cookie": "^3.0.0",
      "leaflet": "^1.8.0",
      "leaflet.locatecontrol": "^0.83.0",
 +    "make-plural": "^7.4.0",
      "osm-community-index": "^5.2.0"
    },
    "devDependencies": {
+     "@stylistic/eslint-plugin-js": "^4.0.0",
      "@types/jquery": "^3.5.0",
      "@types/leaflet": "^1.9.0",
      "eslint": "^9.0.0",
-     "eslint-plugin-erb": "^2.1.0",
-     "@stylistic/eslint-plugin-js": "^4.0.0",
-     "eslint-formatter-compact": "^8.40.0"
+     "eslint-formatter-compact": "^8.40.0",
+     "eslint-plugin-erb": "^2.1.0"
    }
  }
diff --combined yarn.lock
index 737486946001ab12bb4ff5b6368ce8fff7f5738a,964aee3c9968852a33d9f4eddafda5af347700fc..a384f4b0daf5e99f35703f0be569f3ce09876da9
+++ b/yarn.lock
    resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0"
    integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==
  
 -"@eslint/config-array@^0.19.0":
 -  version "0.19.0"
 -  resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.19.0.tgz#3251a528998de914d59bb21ba4c11767cf1b3519"
 -  integrity sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==
 +"@eslint/config-array@^0.19.2":
 +  version "0.19.2"
 +  resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.19.2.tgz#3060b809e111abfc97adb0bb1172778b90cb46aa"
 +  integrity sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==
    dependencies:
 -    "@eslint/object-schema" "^2.1.4"
 +    "@eslint/object-schema" "^2.1.6"
      debug "^4.3.1"
      minimatch "^3.1.2"
  
 -"@eslint/core@^0.10.0":
 -  version "0.10.0"
 -  resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.10.0.tgz#23727063c21b335f752dbb3a16450f6f9cbc9091"
 -  integrity sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==
 -  dependencies:
 -    "@types/json-schema" "^7.0.15"
 +"@eslint/config-helpers@^0.1.0":
 +  version "0.1.0"
 +  resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.1.0.tgz#62f1b7821e9d9ced1b3f512c7ea731825765d1cc"
 +  integrity sha512-kLrdPDJE1ckPo94kmPPf9Hfd0DU0Jw6oKYrhe+pwSC0iTUInmTa+w6fw8sGgcfkFJGNdWOUeOaDM4quW4a7OkA==
  
 -"@eslint/core@^0.11.0":
 -  version "0.11.0"
 -  resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.11.0.tgz#7a9226e850922e42cbd2ba71361eacbe74352a12"
 -  integrity sha512-DWUB2pksgNEb6Bz2fggIy1wh6fGgZP4Xyy/Mt0QZPiloKKXerbqq9D3SBQTlCRYOrcRPu4vuz+CGjwdfqxnoWA==
 +"@eslint/core@^0.12.0":
 +  version "0.12.0"
 +  resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.12.0.tgz#5f960c3d57728be9f6c65bd84aa6aa613078798e"
 +  integrity sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==
    dependencies:
      "@types/json-schema" "^7.0.15"
  
 -"@eslint/eslintrc@^3.2.0":
 -  version "3.2.0"
 -  resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.2.0.tgz#57470ac4e2e283a6bf76044d63281196e370542c"
 -  integrity sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==
 +"@eslint/eslintrc@^3.3.0":
 +  version "3.3.0"
 +  resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.0.tgz#96a558f45842989cca7ea1ecd785ad5491193846"
 +  integrity sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==
    dependencies:
      ajv "^6.12.4"
      debug "^4.3.2"
      minimatch "^3.1.2"
      strip-json-comments "^3.1.1"
  
 -"@eslint/js@9.20.0":
 -  version "9.20.0"
 -  resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.20.0.tgz#7421bcbe74889fcd65d1be59f00130c289856eb4"
 -  integrity sha512-iZA07H9io9Wn836aVTytRaNqh00Sad+EamwOVJT12GTLw1VGMFV/4JaME+JjLtr9fiGaoWgYnS54wrfWsSs4oQ==
 +"@eslint/js@9.22.0":
 +  version "9.22.0"
 +  resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.22.0.tgz#4ff53649ded7cbce90b444b494c234137fa1aa3d"
 +  integrity sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==
  
 -"@eslint/object-schema@^2.1.4":
 -  version "2.1.4"
 -  resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.4.tgz#9e69f8bb4031e11df79e03db09f9dbbae1740843"
 -  integrity sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==
 +"@eslint/object-schema@^2.1.6":
 +  version "2.1.6"
 +  resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.6.tgz#58369ab5b5b3ca117880c0f6c0b0f32f6950f24f"
 +  integrity sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==
  
 -"@eslint/plugin-kit@^0.2.5":
 -  version "0.2.5"
 -  resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz#ee07372035539e7847ef834e3f5e7b79f09e3a81"
 -  integrity sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==
 +"@eslint/plugin-kit@^0.2.7":
 +  version "0.2.7"
 +  resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz#9901d52c136fb8f375906a73dcc382646c3b6a27"
 +  integrity sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==
    dependencies:
 -    "@eslint/core" "^0.10.0"
 +    "@eslint/core" "^0.12.0"
      levn "^0.4.1"
  
  "@humanfs/core@^0.19.1":
    resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a"
    integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==
  
 -"@humanwhocodes/retry@^0.4.1":
 -  version "0.4.1"
 -  resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.1.tgz#9a96ce501bc62df46c4031fbd970e3cc6b10f07b"
 -  integrity sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==
 +"@humanwhocodes/retry@^0.4.2":
 +  version "0.4.2"
 +  resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.2.tgz#1860473de7dfa1546767448f333db80cb0ff2161"
 +  integrity sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==
  
+ "@observablehq/plot@^0.6.0":
+   version "0.6.17"
+   resolved "https://registry.yarnpkg.com/@observablehq/plot/-/plot-0.6.17.tgz#9a43f785e89e6d4413701e2b24d2ec8cc2700e02"
+   integrity sha512-/qaXP/7mc4MUS0s4cPPFASDRjtsWp85/TbfsciqDgU1HwYixbSbbytNuInD8AcTYC3xaxACgVX06agdfQy9W+g==
+   dependencies:
+     d3 "^7.9.0"
+     interval-tree-1d "^1.0.0"
+     isoformat "^0.2.0"
+ "@popperjs/core@^2.11.6":
+   version "2.11.8"
+   resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f"
+   integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==
  "@stylistic/eslint-plugin-js@^4.0.0":
 -  version "4.0.1"
 -  resolved "https://registry.yarnpkg.com/@stylistic/eslint-plugin-js/-/eslint-plugin-js-4.0.1.tgz#c55e59ad2f00914f9eb103ba9e7be00aff7715dd"
 -  integrity sha512-2EGKM6WHnZSidWKCu6ePJCqdpgWiEU1Bt26ktWEfTpCmRP+2vRQ6ViK8X6DLwu4+F0zPLy/Txe2HhI3qJFUvqA==
 +  version "4.2.0"
 +  resolved "https://registry.yarnpkg.com/@stylistic/eslint-plugin-js/-/eslint-plugin-js-4.2.0.tgz#30536fd35dd6aba08c1e234fe37bf66831c6e989"
 +  integrity sha512-MiJr6wvyzMYl/wElmj8Jns8zH7Q1w8XoVtm+WM6yDaTrfxryMyb8n0CMxt82fo42RoLIfxAEtM6tmQVxqhk0/A==
    dependencies:
      eslint-visitor-keys "^4.2.0"
      espree "^10.3.0"
@@@ -180,6 -196,11 +194,11 @@@ balanced-match@^1.0.0
    resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
    integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
  
+ binary-search-bounds@^2.0.0:
+   version "2.0.5"
+   resolved "https://registry.yarnpkg.com/binary-search-bounds/-/binary-search-bounds-2.0.5.tgz#125e5bd399882f71e6660d4bf1186384e989fba7"
+   integrity sha512-H0ea4Fd3lS1+sTEB2TgcLoK21lLhwEJzlQv3IN47pJS976Gx4zoWe0ak3q+uYh60ppQxg9F16Ri4tS1sfD4+jA==
  brace-expansion@^1.1.7:
    version "1.1.11"
    resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
      balanced-match "^1.0.0"
      concat-map "0.0.1"
  
+ cal-heatmap@^4.2.4:
+   version "4.2.4"
+   resolved "https://registry.yarnpkg.com/cal-heatmap/-/cal-heatmap-4.2.4.tgz#0c35616be0dc09df64e1163a804231d8d3f9feaa"
+   integrity sha512-TTNoQTRxHXrttOEbkraKv9vy2VpfQIwVLQJTlAfcBusQK9qrBL/UBO+WloAxv2yrR+P8URA2cuXEdc5iztER9g==
+   dependencies:
+     "@observablehq/plot" "^0.6.0"
+     "@popperjs/core" "^2.11.6"
+     d3-color "^3.1.0"
+     d3-fetch "^3.0.1"
+     d3-selection "^3.0.0"
+     d3-transition "^3.0.1"
+     dayjs "^1.11.7"
+     eventemitter3 "^5.0.0"
+     lodash-es "^4.17.21"
  callsites@^3.0.0:
    version "3.1.0"
    resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
@@@ -213,6 -249,11 +247,11 @@@ color-name@~1.1.4
    resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
    integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
  
+ commander@7:
+   version "7.2.0"
+   resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
+   integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
  concat-map@0.0.1:
    version "0.0.1"
    resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
@@@ -227,6 -268,255 +266,255 @@@ cross-spawn@^7.0.6
      shebang-command "^2.0.0"
      which "^2.0.1"
  
+ "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3, d3-array@^3.2.0:
+   version "3.2.4"
+   resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.4.tgz#15fec33b237f97ac5d7c986dc77da273a8ed0bb5"
+   integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==
+   dependencies:
+     internmap "1 - 2"
+ d3-axis@3:
+   version "3.0.0"
+   resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-3.0.0.tgz#c42a4a13e8131d637b745fc2973824cfeaf93322"
+   integrity sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==
+ d3-brush@3:
+   version "3.0.0"
+   resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-3.0.0.tgz#6f767c4ed8dcb79de7ede3e1c0f89e63ef64d31c"
+   integrity sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==
+   dependencies:
+     d3-dispatch "1 - 3"
+     d3-drag "2 - 3"
+     d3-interpolate "1 - 3"
+     d3-selection "3"
+     d3-transition "3"
+ d3-chord@3:
+   version "3.0.1"
+   resolved "https://registry.yarnpkg.com/d3-chord/-/d3-chord-3.0.1.tgz#d156d61f485fce8327e6abf339cb41d8cbba6966"
+   integrity sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==
+   dependencies:
+     d3-path "1 - 3"
+ "d3-color@1 - 3", d3-color@3, d3-color@^3.1.0:
+   version "3.1.0"
+   resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-3.1.0.tgz#395b2833dfac71507f12ac2f7af23bf819de24e2"
+   integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==
+ d3-contour@4:
+   version "4.0.2"
+   resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-4.0.2.tgz#bb92063bc8c5663acb2422f99c73cbb6c6ae3bcc"
+   integrity sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==
+   dependencies:
+     d3-array "^3.2.0"
+ d3-delaunay@6:
+   version "6.0.4"
+   resolved "https://registry.yarnpkg.com/d3-delaunay/-/d3-delaunay-6.0.4.tgz#98169038733a0a5babbeda55054f795bb9e4a58b"
+   integrity sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==
+   dependencies:
+     delaunator "5"
+ "d3-dispatch@1 - 3", d3-dispatch@3:
+   version "3.0.1"
+   resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-3.0.1.tgz#5fc75284e9c2375c36c839411a0cf550cbfc4d5e"
+   integrity sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==
+ "d3-drag@2 - 3", d3-drag@3:
+   version "3.0.0"
+   resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-3.0.0.tgz#994aae9cd23c719f53b5e10e3a0a6108c69607ba"
+   integrity sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==
+   dependencies:
+     d3-dispatch "1 - 3"
+     d3-selection "3"
+ "d3-dsv@1 - 3", d3-dsv@3:
+   version "3.0.1"
+   resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-3.0.1.tgz#c63af978f4d6a0d084a52a673922be2160789b73"
+   integrity sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==
+   dependencies:
+     commander "7"
+     iconv-lite "0.6"
+     rw "1"
+ "d3-ease@1 - 3", d3-ease@3:
+   version "3.0.1"
+   resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-3.0.1.tgz#9658ac38a2140d59d346160f1f6c30fda0bd12f4"
+   integrity sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==
+ d3-fetch@3, d3-fetch@^3.0.1:
+   version "3.0.1"
+   resolved "https://registry.yarnpkg.com/d3-fetch/-/d3-fetch-3.0.1.tgz#83141bff9856a0edb5e38de89cdcfe63d0a60a22"
+   integrity sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==
+   dependencies:
+     d3-dsv "1 - 3"
+ d3-force@3:
+   version "3.0.0"
+   resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-3.0.0.tgz#3e2ba1a61e70888fe3d9194e30d6d14eece155c4"
+   integrity sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==
+   dependencies:
+     d3-dispatch "1 - 3"
+     d3-quadtree "1 - 3"
+     d3-timer "1 - 3"
+ "d3-format@1 - 3", d3-format@3:
+   version "3.1.0"
+   resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-3.1.0.tgz#9260e23a28ea5cb109e93b21a06e24e2ebd55641"
+   integrity sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==
+ d3-geo@3:
+   version "3.1.1"
+   resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-3.1.1.tgz#6027cf51246f9b2ebd64f99e01dc7c3364033a4d"
+   integrity sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==
+   dependencies:
+     d3-array "2.5.0 - 3"
+ d3-hierarchy@3:
+   version "3.1.2"
+   resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz#b01cd42c1eed3d46db77a5966cf726f8c09160c6"
+   integrity sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==
+ "d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@3:
+   version "3.0.1"
+   resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz#3c47aa5b32c5b3dfb56ef3fd4342078a632b400d"
+   integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==
+   dependencies:
+     d3-color "1 - 3"
+ "d3-path@1 - 3", d3-path@3, d3-path@^3.1.0:
+   version "3.1.0"
+   resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-3.1.0.tgz#22df939032fb5a71ae8b1800d61ddb7851c42526"
+   integrity sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==
+ d3-polygon@3:
+   version "3.0.1"
+   resolved "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-3.0.1.tgz#0b45d3dd1c48a29c8e057e6135693ec80bf16398"
+   integrity sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==
+ "d3-quadtree@1 - 3", d3-quadtree@3:
+   version "3.0.1"
+   resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-3.0.1.tgz#6dca3e8be2b393c9a9d514dabbd80a92deef1a4f"
+   integrity sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==
+ d3-random@3:
+   version "3.0.1"
+   resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-3.0.1.tgz#d4926378d333d9c0bfd1e6fa0194d30aebaa20f4"
+   integrity sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==
+ d3-scale-chromatic@3:
+   version "3.1.0"
+   resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz#34c39da298b23c20e02f1a4b239bd0f22e7f1314"
+   integrity sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==
+   dependencies:
+     d3-color "1 - 3"
+     d3-interpolate "1 - 3"
+ d3-scale@4:
+   version "4.0.2"
+   resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-4.0.2.tgz#82b38e8e8ff7080764f8dcec77bd4be393689396"
+   integrity sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==
+   dependencies:
+     d3-array "2.10.0 - 3"
+     d3-format "1 - 3"
+     d3-interpolate "1.2.0 - 3"
+     d3-time "2.1.1 - 3"
+     d3-time-format "2 - 4"
+ "d3-selection@2 - 3", d3-selection@3, d3-selection@^3.0.0:
+   version "3.0.0"
+   resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-3.0.0.tgz#c25338207efa72cc5b9bd1458a1a41901f1e1b31"
+   integrity sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==
+ d3-shape@3:
+   version "3.2.0"
+   resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-3.2.0.tgz#a1a839cbd9ba45f28674c69d7f855bcf91dfc6a5"
+   integrity sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==
+   dependencies:
+     d3-path "^3.1.0"
+ "d3-time-format@2 - 4", d3-time-format@4:
+   version "4.1.0"
+   resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-4.1.0.tgz#7ab5257a5041d11ecb4fe70a5c7d16a195bb408a"
+   integrity sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==
+   dependencies:
+     d3-time "1 - 3"
+ "d3-time@1 - 3", "d3-time@2.1.1 - 3", d3-time@3:
+   version "3.1.0"
+   resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-3.1.0.tgz#9310db56e992e3c0175e1ef385e545e48a9bb5c7"
+   integrity sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==
+   dependencies:
+     d3-array "2 - 3"
+ "d3-timer@1 - 3", d3-timer@3:
+   version "3.0.1"
+   resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-3.0.1.tgz#6284d2a2708285b1abb7e201eda4380af35e63b0"
+   integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==
+ "d3-transition@2 - 3", d3-transition@3, d3-transition@^3.0.1:
+   version "3.0.1"
+   resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-3.0.1.tgz#6869fdde1448868077fdd5989200cb61b2a1645f"
+   integrity sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==
+   dependencies:
+     d3-color "1 - 3"
+     d3-dispatch "1 - 3"
+     d3-ease "1 - 3"
+     d3-interpolate "1 - 3"
+     d3-timer "1 - 3"
+ d3-zoom@3:
+   version "3.0.0"
+   resolved "https://registry.yarnpkg.com/d3-zoom/-/d3-zoom-3.0.0.tgz#d13f4165c73217ffeaa54295cd6969b3e7aee8f3"
+   integrity sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==
+   dependencies:
+     d3-dispatch "1 - 3"
+     d3-drag "2 - 3"
+     d3-interpolate "1 - 3"
+     d3-selection "2 - 3"
+     d3-transition "2 - 3"
+ d3@^7.9.0:
+   version "7.9.0"
+   resolved "https://registry.yarnpkg.com/d3/-/d3-7.9.0.tgz#579e7acb3d749caf8860bd1741ae8d371070cd5d"
+   integrity sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==
+   dependencies:
+     d3-array "3"
+     d3-axis "3"
+     d3-brush "3"
+     d3-chord "3"
+     d3-color "3"
+     d3-contour "4"
+     d3-delaunay "6"
+     d3-dispatch "3"
+     d3-drag "3"
+     d3-dsv "3"
+     d3-ease "3"
+     d3-fetch "3"
+     d3-force "3"
+     d3-format "3"
+     d3-geo "3"
+     d3-hierarchy "3"
+     d3-interpolate "3"
+     d3-path "3"
+     d3-polygon "3"
+     d3-quadtree "3"
+     d3-random "3"
+     d3-scale "4"
+     d3-scale-chromatic "3"
+     d3-selection "3"
+     d3-shape "3"
+     d3-time "3"
+     d3-time-format "4"
+     d3-timer "3"
+     d3-transition "3"
+     d3-zoom "3"
+ dayjs@^1.11.7:
+   version "1.11.13"
+   resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.13.tgz#92430b0139055c3ebb60150aa13e860a4b5a366c"
+   integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==
  debug@^4.3.1, debug@^4.3.2:
    version "4.3.4"
    resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
@@@ -239,6 -529,13 +527,13 @@@ deep-is@^0.1.3
    resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
    integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
  
+ delaunator@5:
+   version "5.0.1"
+   resolved "https://registry.yarnpkg.com/delaunator/-/delaunator-5.0.1.tgz#39032b08053923e924d6094fe2cde1a99cc51278"
+   integrity sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==
+   dependencies:
+     robust-predicates "^3.0.2"
  diacritics@^1.3.0:
    version "1.3.0"
    resolved "https://registry.yarnpkg.com/diacritics/-/diacritics-1.3.0.tgz#3efa87323ebb863e6696cebb0082d48ff3d6f7a1"
@@@ -259,10 -556,10 +554,10 @@@ eslint-plugin-erb@^2.1.0
    resolved "https://registry.yarnpkg.com/eslint-plugin-erb/-/eslint-plugin-erb-2.1.1.tgz#8a0a6c2bcaf3a8573c381b595969145aff93cfc6"
    integrity sha512-AhznaVwRpQqR8NADjN4SZnKNbaIdAbGxTjCg6cj3UhwGyQOUJ6kXwhYrl1LYrGDNx7Ouyd8xuEG7wepFZyPgFw==
  
 -eslint-scope@^8.2.0:
 -  version "8.2.0"
 -  resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.2.0.tgz#377aa6f1cb5dc7592cfd0b7f892fd0cf352ce442"
 -  integrity sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==
 +eslint-scope@^8.3.0:
 +  version "8.3.0"
 +  resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.3.0.tgz#10cd3a918ffdd722f5f3f7b5b83db9b23c87340d"
 +  integrity sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==
    dependencies:
      esrecurse "^4.3.0"
      estraverse "^5.2.0"
@@@ -278,21 -575,20 +573,21 @@@ eslint-visitor-keys@^4.2.0
    integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==
  
  eslint@^9.0.0:
 -  version "9.20.1"
 -  resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.20.1.tgz#923924c078f5226832449bac86662dd7e53c91d6"
 -  integrity sha512-m1mM33o6dBUjxl2qb6wv6nGNwCAsns1eKtaQ4l/NPHeTvhiUPbtdfMyktxN4B3fgHIgsYh1VT3V9txblpQHq+g==
 +  version "9.22.0"
 +  resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.22.0.tgz#0760043809fbf836f582140345233984d613c552"
 +  integrity sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ==
    dependencies:
      "@eslint-community/eslint-utils" "^4.2.0"
      "@eslint-community/regexpp" "^4.12.1"
 -    "@eslint/config-array" "^0.19.0"
 -    "@eslint/core" "^0.11.0"
 -    "@eslint/eslintrc" "^3.2.0"
 -    "@eslint/js" "9.20.0"
 -    "@eslint/plugin-kit" "^0.2.5"
 +    "@eslint/config-array" "^0.19.2"
 +    "@eslint/config-helpers" "^0.1.0"
 +    "@eslint/core" "^0.12.0"
 +    "@eslint/eslintrc" "^3.3.0"
 +    "@eslint/js" "9.22.0"
 +    "@eslint/plugin-kit" "^0.2.7"
      "@humanfs/node" "^0.16.6"
      "@humanwhocodes/module-importer" "^1.0.1"
 -    "@humanwhocodes/retry" "^0.4.1"
 +    "@humanwhocodes/retry" "^0.4.2"
      "@types/estree" "^1.0.6"
      "@types/json-schema" "^7.0.15"
      ajv "^6.12.4"
      cross-spawn "^7.0.6"
      debug "^4.3.2"
      escape-string-regexp "^4.0.0"
 -    eslint-scope "^8.2.0"
 +    eslint-scope "^8.3.0"
      eslint-visitor-keys "^4.2.0"
      espree "^10.3.0"
      esquery "^1.5.0"
@@@ -351,6 -647,11 +646,11 @@@ esutils@^2.0.2
    resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
    integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
  
+ eventemitter3@^5.0.0:
+   version "5.0.1"
+   resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4"
+   integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==
  fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
    version "3.1.3"
    resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
@@@ -411,6 -712,13 +711,13 @@@ has-flag@^4.0.0
    resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
    integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
  
+ iconv-lite@0.6:
+   version "0.6.3"
+   resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501"
+   integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
+   dependencies:
+     safer-buffer ">= 2.1.2 < 3.0.0"
  ignore@^5.2.0:
    version "5.2.0"
    resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
@@@ -429,6 -737,18 +736,18 @@@ imurmurhash@^0.1.4
    resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
    integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
  
+ "internmap@1 - 2":
+   version "2.0.3"
+   resolved "https://registry.yarnpkg.com/internmap/-/internmap-2.0.3.tgz#6685f23755e43c524e251d29cbc97248e3061009"
+   integrity sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==
+ interval-tree-1d@^1.0.0:
+   version "1.0.4"
+   resolved "https://registry.yarnpkg.com/interval-tree-1d/-/interval-tree-1d-1.0.4.tgz#b44f657de7ddae69ea3f98e0a9ad4bb046b07d11"
+   integrity sha512-wY8QJH+6wNI0uh4pDQzMvl+478Qh7Rl4qLmqiluxALlNvl+I+o5x38Pw3/z7mDPTPS1dQalZJXsmbvxx5gclhQ==
+   dependencies:
+     binary-search-bounds "^2.0.0"
  is-extglob@^2.1.1:
    version "2.1.1"
    resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
@@@ -446,6 -766,11 +765,11 @@@ isexe@^2.0.0
    resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
    integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
  
+ isoformat@^0.2.0:
+   version "0.2.1"
+   resolved "https://registry.yarnpkg.com/isoformat/-/isoformat-0.2.1.tgz#2526344a4276a101b2881848dc337d1d2ae74494"
+   integrity sha512-tFLRAygk9NqrRPhJSnNGh7g7oaVWDwR0wKh/GM2LgmPa50Eg4UfyaCO4I8k6EqJHl1/uh2RAD6g06n5ygEnrjQ==
  jquery-simulate@^1.0.2:
    version "1.0.2"
    resolved "https://registry.yarnpkg.com/jquery-simulate/-/jquery-simulate-1.0.2.tgz#2174b859b75123a0ac6d8ab3a9a6fb4ad7e82898"
@@@ -510,16 -835,16 +834,21 @@@ locate-path@^6.0.0
    dependencies:
      p-locate "^5.0.0"
  
+ lodash-es@^4.17.21:
+   version "4.17.21"
+   resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee"
+   integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
  lodash.merge@^4.6.2:
    version "4.6.2"
    resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
    integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
  
 +make-plural@^7.4.0:
 +  version "7.4.0"
 +  resolved "https://registry.yarnpkg.com/make-plural/-/make-plural-7.4.0.tgz#fa6990dd550dea4de6b20163f74e5ed83d8a8d6d"
 +  integrity sha512-4/gC9KVNTV6pvYg2gFeQYTW3mWaoJt7WZE5vrp1KnQDgW92JtYZnzmZT81oj/dUTqAIu0ufI2x3dkgu3bB1tYg==
 +
  minimatch@^3.1.2:
    version "3.1.2"
    resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
@@@ -602,6 -927,21 +931,21 @@@ resolve-from@^4.0.0
    resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
    integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
  
+ robust-predicates@^3.0.2:
+   version "3.0.2"
+   resolved "https://registry.yarnpkg.com/robust-predicates/-/robust-predicates-3.0.2.tgz#d5b28528c4824d20fc48df1928d41d9efa1ad771"
+   integrity sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==
+ rw@1:
+   version "1.3.3"
+   resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4"
+   integrity sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==
+ "safer-buffer@>= 2.1.2 < 3.0.0":
+   version "2.1.2"
+   resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
+   integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
  shebang-command@^2.0.0:
    version "2.0.0"
    resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"